
#include<stdio.h>
#include<string.h>

/*c语言指针学习第18课：初识共同体*/

union MoneyType
{
    int money_i;
    double money_d;
    char money_str[27];
};

int main()
{
    union MoneyType money;

    printf("%p\n",&money);//存储在同一地址
    printf("%p\n",&money.money_i);
    printf("%p\n",&money.money_d);
    printf("%p\n",&money.money_str);

    printf("%zu\n",sizeof(money));//受内存对齐影响，需进位到8的倍数
    printf("%zu\n",sizeof(money.money_i));//4
    printf("%zu\n",sizeof(money.money_d));//8
    printf("%zu\n",sizeof(money.money_str));//27

    money.money_i = 4;
    money.money_d = 3.75;//优惠后价格
    printf("%lf\n",money.money_d);//重新赋值后，只能试作money_d而不能视为money_i

    return 0;
}